﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Collections.ObjectModel;
using System.Data;
using System.Windows.Media.Imaging;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Controls;
using System.Globalization;
using produccion.modelo;
using produccion.AccesoDatos;
using produccion.clases;
using produccion.modulos;
using System.Windows.Input;
using System.Collections.Specialized;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Threading;


namespace produccion.vistamodelo
{
    public class VMEnviarReparacionesalCliente : ViewModelBase, IDataErrorInfo
    {

        #region Campos
        private MDOgeneral _mod = new MDOgeneral();
        private CLSMAECLIP _cliente = new CLSMAECLIP();
        private MRecibirdePlanta _rec = new MRecibirdePlanta();
        #endregion

        #region Constructor
        public VMEnviarReparacionesalCliente()
        {
            try
            {
                lisreparaciones.CollectionChanged += OnCollectionChanged;
                lisclientes = _cliente.listaClienteReparacionesListas();
                if (MDOgeneral.conexion == null || MDOgeneral.conexion.State == ConnectionState.Closed)
                {
                    MDOgeneral.conectar();
                }
                strTituloVentana = "Enviar Reparaciones al Cliente - Usuario: " + MDOgeneral.usuario + " - [FRMEnviarReparacionesalCliente]";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        #endregion

        #region Propiedades

        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; base.OnPropertyChanged("strTituloVentana"); }
        }

        private List<CLSMAECLIP> _lisclientes = new List<CLSMAECLIP>();
        public List<CLSMAECLIP> lisclientes
        {
            get { return _lisclientes; }
            set { _lisclientes = value; base.OnPropertyChanged("lisclientes"); }
        }

        private CLSMAECLIP _selcliente = new CLSMAECLIP();
        public CLSMAECLIP selcliente
        {
            get { return _selcliente; }
            set
            {
                _selcliente = value;
                base.OnPropertyChanged("selcliente");
                if (selcliente != null)
                {
                    if (selcliente.CODCLI_CLI != null)
                        consultarReparaciones(selcliente.CODCLI_CLI);
                }
            }
        }

        private ObservableCollection<VMReparacionesListas> _lisreparaciones = new ObservableCollection<VMReparacionesListas>();
        public ObservableCollection<VMReparacionesListas> lisreparaciones
        {
            get { return _lisreparaciones; }
            set { _lisreparaciones = value; base.OnPropertyChanged("lisreparaciones"); }
        }

        private VMReparacionesListas _selreparacion;
        public VMReparacionesListas selreparacion
        {
            get { return _selreparacion; }
            set
            {
                _selreparacion = value;
                base.OnPropertyChanged("selreparacion");
            }
        }

        private DateTime _dtmFecha = DateTime.Now;
        public DateTime dtmFecha
        {
            get { return _dtmFecha; }
            set { _dtmFecha = value; base.OnPropertyChanged("dtmFecha"); }
        }

        private string _strMensaje;
        public string strMensaje
        {
            get { return _strMensaje; }
            set { _strMensaje = value; base.OnPropertyChanged("strMensaje"); }
        }

        private Int32 _numTotal=0;
        public Int32 numTotal
        {
            get { return _numTotal; }
            set { _numTotal = value; base.OnPropertyChanged("numTotal"); }
        }

        private Boolean _logTodos = true;
        public Boolean logTodos
        {
            get { return _logTodos; }
            set
            {
                _logTodos = value;
                if (_logTodos)
                {
                    selTodos();
                }
                else
                {
                    selNingun();
                }
                base.OnPropertyChanged("logTodos");
            }
        }
        #endregion

        #region Comandos

        RelayCommand _cmdSalir;
        public ICommand cmdSalir
        {
            get
            {
                if (_cmdSalir == null)
                {
                    _cmdSalir = new RelayCommand(Salir);
                }
                return _cmdSalir;
            }
        }

        RelayCommand _cmdGenerar;
        public ICommand cmdGenerar
        {
            get
            {
                if (_cmdGenerar == null)
                {
                    _cmdGenerar = new RelayCommand(r => generar());
                }
                return _cmdGenerar;
            }
        }

        #endregion

        #region Metodos

        void consultarReparaciones(string strCliente)
        {
            try
            {
                int numContador = 0;
                List<MRecibirdePlanta> lisrep = new List<MRecibirdePlanta>();
                lisrep = _rec.listarReparaciones("R", strCliente);

                List<VMReparacionesListas> all = (from lis in lisrep select new VMReparacionesListas(lis)).ToList();
                foreach (VMReparacionesListas xx in all)
                {
                    xx.PropertyChanged += OnPropertyChanged;
                    numContador = numContador + 1;
                }
                lisreparaciones.Clear();
                lisreparaciones = new ObservableCollection<VMReparacionesListas>(all);
                numTotal = numContador;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            try
            {
                if (e.NewItems != null && e.NewItems.Count > 0)
                {
                    foreach (VMReparacionesListas pro in e.NewItems)
                    {
                        pro.PropertyChanged += OnPropertyChanged;
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            numTotal = 0;
            foreach (var item in lisreparaciones.Where(w => w.logSeleccionado.Equals(true)))
            {
                numTotal = numTotal + 1;
            }         
        }

        public void generar()
        {
            try
            {

                string strNumeros = "";

                foreach(VMReparacionesListas rep in lisreparaciones)
                {
                    if (rep.logSeleccionado)
                    {
                        strNumeros = strNumeros + rep.strNumeroOrden.PadRight(7, ' ') + "-";
                    }
                }

                if (strNumeros.Length > 2)
                {

                    MDOgeneral.spComando.CommandText = "SP_GRABARREPDESPCLIENTE";
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();

                    //Input
                    MDOgeneral.spComando.Parameters.Add("pva_numeros", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Value = strNumeros;
                    MDOgeneral.spComando.Parameters["pva_numeros"].Direction = ParameterDirection.Input;

                    MDOgeneral.spComando.Parameters.Add("pdt_fecha", Oracle.DataAccess.Client.OracleDbType.Date, 40).Value = dtmFecha.Date;
                    MDOgeneral.spComando.Parameters["pdt_fecha"].Direction = ParameterDirection.Input;

                    //Output
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();
                    string c = MDOgeneral.spComando.Parameters["pva_errusu"].Value.ToString();

                    imprimir(c);

                    limpiar();

                    MessageBox.Show("Se grabo la remisión de reparaciones numero: " + c, "Confirmación", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
                }
                else
                {
                    MessageBox.Show("No se grabo la información por que no habian numeros de reparaciones disponibles.", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void limpiar()
        {
            try
            {
                lisreparaciones.Clear();
                lisclientes.Clear();
                selcliente = null;
                lisclientes = _cliente.listaClienteReparacionesListas();
                numTotal = 0;
                dtmFecha = DateTime.Now.Date;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void imprimir(string strDespacho)
        {
            try
            {

                DataTable dtEncabezado = new DataTable("dtEncabezado");
                dtEncabezado.Columns.Add("STREMPRESA");
                dtEncabezado.Columns.Add("STRNIT");
                dtEncabezado.Columns.Add("STRDIRECCION");
                dtEncabezado.Columns.Add("STRCIUDAD");
                dtEncabezado.Columns.Add("STRTELEFONO");
                dtEncabezado.Columns.Add("STRFAX");
                dtEncabezado.Columns.Add("STRREMISION");
                dtEncabezado.Columns.Add("STRFECHA");
                dtEncabezado.Columns.Add("STRMENSAJE");

                DataRow drEncabezado = dtEncabezado.NewRow();
                drEncabezado["STREMPRESA"] = MDOgeneral.strEmpresaImprime;
                drEncabezado["STRNIT"] = MDOgeneral.strEmpresaImprimeNit;
                drEncabezado["STRDIRECCION"] = MDOgeneral.strEmpresaImprimeSoloDireccion;
                drEncabezado["STRCIUDAD"] = MDOgeneral.strEmpresaImprimeCiudad;
                drEncabezado["STRTELEFONO"] = MDOgeneral.strEmpresaImprimeSoloTelefono;
                drEncabezado["STRFAX"] = MDOgeneral.strEmpresaImprimeFax;
                drEncabezado["STRREMISION"] = strDespacho;
                drEncabezado["STRFECHA"] = dtmFecha.ToString("dd/MM/yyyy");
                drEncabezado["STRMENSAJE"] = strMensaje;
                dtEncabezado.Rows.Add(drEncabezado);


                DataTable dtDetalle = new DataTable("dtDetalle");
                dtDetalle.Columns.Add("strCliente");
                dtDetalle.Columns.Add("strNombreCliente");
                dtDetalle.Columns.Add("strReparacion");
                dtDetalle.Columns.Add("strReferencia");
                dtDetalle.Columns.Add("strNombreReferencia");
                dtDetalle.Columns.Add("strColor");
                dtDetalle.Columns.Add("strNombreColor");
                dtDetalle.Columns.Add("strTalla");
                dtDetalle.Columns.Add("strTipo");
                dtDetalle.Columns.Add("strProceso");
                dtDetalle.Columns.Add("strObservacion");

                DataRow drDetalle = dtDetalle.NewRow();
                foreach (VMReparacionesListas rep in lisreparaciones)
                {
                    if (rep.logSeleccionado)
                    {
                        drDetalle["strCliente"] = rep.strCodigoCliente;
                        drDetalle["strNombreCliente"] = rep.strNombreCliente;
                        drDetalle["strReparacion"] = rep.strNumeroReparacion;
                        drDetalle["strReferencia"] = rep.strReferencia;
                        drDetalle["strNombreReferencia"] = rep.strNombreReferencia;
                        drDetalle["strColor"] = rep.strColor;
                        drDetalle["strNombreColor"] = rep.strNombreColor;
                        drDetalle["strTalla"] = rep.strTalla;
                        drDetalle["strTipo"] = rep.strTipo;
                        drDetalle["strProceso"] = rep.strProceso1;
                        drDetalle["strObservacion"] = rep.strObservacion;
                        dtDetalle.Rows.Add(drDetalle);

                        _cliente.CODCLI_CLI = rep.strCodigoCliente;
                    }
                }

                dtEncabezado.TableName = "dtEncabezado";
                dtDetalle.TableName = "dtDetalle";
                DataSet ds = new DataSet("dsRemision");
                ds.Tables.Add(dtEncabezado);
                ds.Tables.Add(dtDetalle);

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = ds, reporte = @"reportes\rptRemision.rpt" };

                vista.Show();

                // Para envia correo con el reporte adjunto

                #region Variables para preguntar si desea envia correo
                string StrCaptionBox = "Confirmation";//FJRF - Creamos el mensaje para el titulo
                string StrMensajeBox = "Desea enviar el correo al cliente?";//FJRF - Creamos el mensaje para el usuario
                MessageBoxButton buttons = MessageBoxButton.YesNo;//FJRF - Creamos el boton
                MessageBoxImage icon = MessageBoxImage.Question;//FJRF - Creamos el icono
                #endregion

                if (MessageBox.Show(StrMensajeBox, StrCaptionBox, buttons, icon) == MessageBoxResult.Yes)//Para enviar el correo
                {
                    try
                    {

                        #region FormaComoSeExporta
                        String StrNombreConRutaReporteOriginal, StrRutaDondeSeExporta, StrRutaArmadaParaEmailOutlook, StrNombreNuevoDocumentoExportado, StrExtencionArchivo, StrCorreosElectronicosDondeSeEnviaElCorreo = "";//FJRF - Variables que se usan para el envio de correo

                        StrNombreNuevoDocumentoExportado = strDespacho;
                        StrExtencionArchivo = "pdf";

                        StrNombreConRutaReporteOriginal = @"reportes\rptRemision.rpt";// Asignamos la ruta donde esta el reporte origina que se va a cargar
                        StrRutaDondeSeExporta = @"\\10.1.1.10\planos\";// Asignamos la ruta donde se exportara el archivo

                        produccion.reportes.Vista FrmReporte = new produccion.reportes.Vista();// Cargamos las clases que necesitamos que estan en este formulario
                        FrmReporte.ExportarCrystalReport(ds, StrNombreConRutaReporteOriginal, StrRutaDondeSeExporta, StrNombreNuevoDocumentoExportado, StrExtencionArchivo);// Enviamos la impresion
                        #endregion

                        #region FJRF - EnviamosElEmailOutlook

                        _cliente.consultar(); 

                        StrCorreosElectronicosDondeSeEnviaElCorreo = _cliente.EMAIL_CLI;

                        StrRutaArmadaParaEmailOutlook = StrRutaDondeSeExporta + StrNombreNuevoDocumentoExportado + "." + StrExtencionArchivo;
                        try
                        {
                            // Creación de la instancia de Outlook.
                            Outlook.Application oApp = new Outlook.Application();
                            // Crear un nuevo elemento de correo.
                            Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
                            // Establecer HTMLBody.
                            // Añadir el cuerpo del correo electrónico
                            oMsg.HTMLBody = "Cordial saludo, a continuación adjuntamos la remisión de reparaciones numero [ " + StrNombreNuevoDocumentoExportado + " ]";
                            // Añadir un archivo adjunto.
                            String sDisplayName = "RemisionNo_" + StrNombreNuevoDocumentoExportado + " ";
                            int iPosition = (int)oMsg.Body.Length + 1;
                            int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
                            // Se adjunta el archivo
                            Outlook.Attachment oAttach = oMsg.Attachments.Add(StrRutaArmadaParaEmailOutlook, iAttachType, iPosition, sDisplayName);
                            // Línea de asunto
                            oMsg.Subject = "Remisión de reparaciones No [ " + StrNombreNuevoDocumentoExportado + " ]";
                            // Añadir un destinatario.
                            Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
                            // Cambie el destinatario en la línea siguiente si es necesario.
                            Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(StrCorreosElectronicosDondeSeEnviaElCorreo);
                            oRecip.Resolve();
                            // Para Enviar sin mostrar outlook.
                            //oMsg.Send(); 
                            // Para mostrar el outlook antes de enviar
                            oMsg.Display();
                            // Se Limpian los objetos creados
                            oRecip = null;
                            oRecips = null;
                            oMsg = null;
                            oApp = null;
                        }
                        catch (Exception ex) { MessageBox.Show(ex.Message); }

                        #endregion
                    }
                    catch (Exception ex) { MessageBox.Show(ex.Message); }//FJRF - Si hay algun error lo reportamos
                }
                else
                {
                    MessageBoxResult result = MessageBox.Show("Envio de correos por Outlook cancelado", "PROCESO CANCELADO");
                }


            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void selTodos()
        {
            foreach (VMReparacionesListas lis in lisreparaciones)
            {
                lis.logSeleccionado = true;
            }
        }

        private void selNingun()
        {
            foreach (VMReparacionesListas lis in lisreparaciones)
            {
                lis.logSeleccionado = false;
            }
        }

        void Salir(Object frmformulario)
        {
            ((Window)frmformulario).Close();
        }

        #endregion

        #region IDataErrorInfo Members

        string IDataErrorInfo.Error { get { return null; } }

        string IDataErrorInfo.this[string propertyName]
        {
            get { return this.GetValidationError(propertyName); }
        }

        #endregion

        #region Validation

        /// <summary>
        /// Returns true if this object has no validation errors.
        /// </summary>
        /// 

        public bool IsValid
        {
            get
            {
                foreach (string property in ValidatedProperties)
                    if (GetValidationError(property) != null)
                        return false;

                return true;
            }
        }

        static readonly string[] ValidatedProperties = 
        { 
            "selcliente",
            "numTotal"
        };

        string GetValidationError(string propertyName)
        {
            string error = null;

            if (Array.IndexOf(ValidatedProperties, propertyName) < 0)
                return null;

            //&& CODCPT_NVP.Length==3
            switch (propertyName)
            {
                case "selcliente":
                    error = this.ValidateCliente();
                    break;
                case "numTotal":
                    error = this.ValidateTotal();
                    break;
                default:
                    Debug.Fail("Unexpected property being validated on Customer: " + propertyName);
                    break;
            }
            return error;
        }

        string ValidateCliente()
        {
            try
            {
                if (selcliente != null)
                {
                    if (selcliente.CODCLI_CLI ==null)
                        return "Debe seleccionar un cliente.";

                }
                else
                    return "Debe escoger un cliente para hacer el envio.";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateTotal()
        {
            try
            {
                if (numTotal == 0) { return "Falta seleccionar las ordenes que se van a despachar al cliente"; }
                else return null;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }
        
        #endregion
    }

    #region Vista-modelo
    public class VMReparacionesListas : ViewModelBase, IDataErrorInfo
    {

        #region Campos
        private MRecibirdePlanta _procesos = new MRecibirdePlanta();
        #endregion

        #region Constructor

        public VMReparacionesListas(MRecibirdePlanta procesos)
        {
            _procesos = procesos;
        }

        public VMReparacionesListas()
        {
            base.OnPropertyChanged("strNumeroOrden");
        }

        #endregion

        #region Propiedades

        public ValidarOrden validarOrden;

        public string strNumeroOrden
        {
            get { return _procesos.strNumeroOrden; }
            set { _procesos.strNumeroOrden = value; base.OnPropertyChanged("strNumeroOrden"); }
        }

        public string strNumeroReparacion
        {
            get { return _procesos.strNumeroReparacion; }
            set { _procesos.strNumeroReparacion = value; base.OnPropertyChanged("strNumeroReparacion"); }
        }

        public Int32 numConsecutivo
        {
            get { return _procesos.numConsecutivo; }
            set { _procesos.numConsecutivo = value; base.OnPropertyChanged("numConsecutivo"); }
        }

        public string strCodigoCliente
        {
            get { return _procesos.strCodigoCliente; }
            set { _procesos.strCodigoCliente = value; base.OnPropertyChanged("strCodigoCliente"); }
        }

        public string strNombreCliente
        {
            get { return _procesos.strNombreCliente; }
            set { _procesos.strNombreCliente = value; base.OnPropertyChanged("strNombreCliente"); }
        }

        public string strReferencia
        {
            get { return _procesos.strReferencia; }
            set { _procesos.strReferencia = value; base.OnPropertyChanged("strReferencia"); }
        }

        public string strNombreReferencia
        {
            get { return _procesos.strNombreReferencia; }
            set { _procesos.strNombreReferencia = value; base.OnPropertyChanged("strNombreReferencia"); }
        }

        public string strColor
        {
            get { return _procesos.strColor; }
            set { _procesos.strColor = value; base.OnPropertyChanged("strColor"); }
        }

        public string strNombreColor
        {
            get { return _procesos.strNombreColor; }
            set { _procesos.strNombreColor = value; base.OnPropertyChanged("strNombreColor"); }
        }

        public string strTalla
        {
            get { return _procesos.strTalla; }
            set { _procesos.strTalla = value; base.OnPropertyChanged("strTalla"); }
        }

        public DateTime dtmFechaRecibido
        {
            get { return _procesos.dtmFechaRecibido; }
            set { _procesos.dtmFechaRecibido = value; base.OnPropertyChanged("dtmFechaRecibido"); }
        }

        public string strTipo
        {
            get { return _procesos.strTipo; }
            set { _procesos.strTipo = value; base.OnPropertyChanged("strTipo"); }
        }

        public string strDaño1
        {
            get { return _procesos.strDaño1; }
            set { _procesos.strDaño1 = value; base.OnPropertyChanged("strDaño1"); }
        }

        public string strDaño2
        {
            get { return _procesos.strDaño2; }
            set { _procesos.strDaño2 = value; base.OnPropertyChanged("strDaño2"); }
        }

        public string strDaño3
        {
            get { return _procesos.strDaño3; }
            set { _procesos.strDaño3 = value; base.OnPropertyChanged("strDaño3"); }
        }

        public string strDaño4
        {
            get { return _procesos.strDaño4; }
            set { _procesos.strDaño4 = value; base.OnPropertyChanged("strDaño4"); }
        }

        public string strDaño5
        {
            get { return _procesos.strDaño5; }
            set { _procesos.strDaño5 = value; base.OnPropertyChanged("strDaño5"); }
        }

        public string strProceso1
        {
            get { return _procesos.strProceso1; }
            set { _procesos.strProceso1 = value; base.OnPropertyChanged("strProceso1"); }
        }

        public string strProceso2
        {
            get { return _procesos.strProceso2; }
            set { _procesos.strProceso2 = value; base.OnPropertyChanged("strProceso2"); }
        }

        public string strProceso3
        {
            get { return _procesos.strProceso3; }
            set { _procesos.strProceso3 = value; base.OnPropertyChanged("strProceso3"); }
        }

        public string strProceso4
        {
            get { return _procesos.strProceso4; }
            set { _procesos.strProceso4 = value; base.OnPropertyChanged("strProceso4"); }
        }

        public string strProceso5
        {
            get { return _procesos.strProceso5; }
            set { _procesos.strProceso5 = value; base.OnPropertyChanged("strProceso5"); }
        }

        public string strObservacion
        {
            get { return _procesos.strObservacion; }
            set { _procesos.strObservacion = value; base.OnPropertyChanged("strObservacion"); }
        }

        public Boolean logSeleccionado
        {
            get { return _procesos.logSeleccionado; }
            set { _procesos.logSeleccionado = value; base.OnPropertyChanged("logSeleccionado"); }
        }

        #endregion

        #region Metodos

        public MRecibirdePlanta getProcesos()
        {
            return _procesos;
        }

        public delegate string ValidarOrden(string strNumeroOrden);

        #endregion

        #region IDataErrorInfo Members

        string IDataErrorInfo.Error { get { return null; } }

        string IDataErrorInfo.this[string propertyName]
        {
            get { return this.GetValidationError(propertyName); }
        }

        #endregion

        #region Validation

        /// <summary>
        /// Returns true if this object has no validation errors.
        /// </summary>
        /// 

        public bool IsValid
        {
            get
            {
                foreach (string property in ValidatedProperties)
                    if (GetValidationError(property) != null)
                        return false;

                return true;
            }
        }

        static readonly string[] ValidatedProperties = 
                    { 
                        "logSeleccionado"
                    };

        string GetValidationError(string propertyName)
        {
            string error = null;

            if (Array.IndexOf(ValidatedProperties, propertyName) < 0)
                return null;

            //&& CODCPT_NVP.Length==3
            switch (propertyName)
            {
                case "logSeleccionado":
                    error = this.ValidateSeleccionado();
                    break;
                default:
                    Debug.Fail("Unexpected property being validated on Customer: " + propertyName);
                    break;
            }
            return error;
        }

        string ValidateSeleccionado()
        {
            try
            {
                if (logSeleccionado == false)
                {
                    return null;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        
        #endregion

    }
    #endregion
}
